﻿using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using Infrastucture;
using TimeSplicerModule.DomainModels;

namespace TimeSplicerModule.ViewModels
{
    public class ProjectListViewModel : ViewModel
    {
        private Guid _selectedUserGuid;
        private Guid _selectedStatusGuid;
        private Guid _selectedTaskStatusGuid;
        private string _searchText;
        private List<UserModel> _users;
        private List<ProjectUserModel> _projectUsers;
        private List<StatusModel> _statuses;
        private List<StatusModel> _taskStatuses;
        private List<ProjectModel> _projects;
        private ObservableCollection<ProjectModel> _filteredProjects;
        private List<TaskModel> _tasks;
        private List<TaskModel> _filteredTasks;
        private bool _isEnabled;

        public Guid SelectedUserGuid
        {
            get { return _selectedUserGuid; }
            set { SetProperty(ref _selectedUserGuid, value); }
        }
        public Guid SelectedStatusGuid
        {
            get { return _selectedStatusGuid; }
            set { SetProperty(ref _selectedStatusGuid, value); }
        }
        public Guid SelectedTaskStatusGuid
        {
            get { return _selectedTaskStatusGuid; }
            set { SetProperty(ref _selectedTaskStatusGuid, value); }
        }
        public string SearchText
        {
            get { return _searchText; }
            set { SetProperty(ref _searchText, value); }
        }
        public List<UserModel> Users
        {
            get { return _users; }
            set { SetProperty(ref  _users, value); }
        }
        public List<ProjectUserModel> ProjectUsers
        {
            get { return _projectUsers; }
            set { SetProperty(ref _projectUsers, value); }
        }
        public List<StatusModel> Statuses
        {
            get { return _statuses; }
            set { SetProperty(ref _statuses, value); }
        }
        public List<StatusModel> TaskStatuses
        {
            get { return _taskStatuses; }
            set { SetProperty(ref _taskStatuses, value); }
        }
        public List<ProjectModel> Projects
        {
            get { return _projects; }
            set { SetProperty(ref _projects, value); }
        }
        public ObservableCollection<ProjectModel> FilteredProjects
        {
            get { return _filteredProjects; }
            set { SetProperty(ref _filteredProjects, value); }
        }
        public List<TaskModel> Tasks
        {
            get { return _tasks; }
            set { SetProperty(ref _tasks, value); }
        }
        public List<TaskModel> FilteredTasks
        {
            get { return _filteredTasks; }
            set { SetProperty(ref _filteredTasks, value); }
        }
        public bool IsEnabled
        {
            get { return _isEnabled; }
            set { SetProperty(ref _isEnabled, value); }
        }
    }
}
